Aufgabe Übung Geburtstage ?

Lernziele

Wiederholungsfragen

Ein Klick auf den roten Hyperlink zeigt die richtige Lösung.

  1. Was ist richtig? Als Gültigkeitsbereich bezeichnet man ...

    1. die Zeitspanne, in welcher der Wert einer Variablen gespeichert bleibt.
    2. den Programmabschnitt, in dem ein Element für andere sichtbar ist.
    3. den Wertebereich eines Datentyps.
    4. eine Let-Property, die Eigenschaftswerte validiert.

  2. Was ist richtig? Ein Konstruktor ist ...

    1. eine Methode, die ein Objekt bei der Erstellung initialisiert.
    2. eine Methode, die den Zustand eines Objekts freigibt.
    3. eine Anweisung, die eine Instanz einer benutzerdefinierten Klasse erstellt und den Verweis darauf einer Objektvariablen zuweist.
    4. eine Anweisung, die ein (ActiveX-) Objekt einer 'fremden' Anwendung erstellt und den Verweis darauf einer Objektvariablen zuweist.

  3. Sei cEintrag eine Klasse. Wie viele Instanzen dieser Klasse existieren, nachdem die folgende Test-Prozedur ausgeführt wurde?

    Private E1 As cEintrag
    
    Sub Test()
      Dim E2 As cEintrag
      Set E1 = New cEintrag
      Set E2 = New cEintrag
      Set E1 = E2
    End Sub

    1. 0
    2. 1
    3. 2
    4. 3

  4. Sei cEintrag eine Klasse. Wie viele Instanzen dieser Klasse existieren, nachdem die folgende Test-Prozedur ausgeführt wurde?

    Private E1 As cEintrag
    
    Sub Test()
      Dim E2 As cEintrag
      Set E1 = New cEintrag
      Set E1 = E2
      Set E2 = Nothing
    End Sub

    1. 0
    2. 1
    3. 2
    4. 3

  5. Welche Aussage ist falsch ?

    1. Module trennen eine unsichtbare und unantastbare Implementation von einer sichtbaren und zugänglichen Schnittstelle.
    2. Eine Benutzerschnittstelle ist eine Schnittstelle.
    3. Eine Prozedur ist ein Modul. Der Prozedurkopf ist die Schnittstelle, der Prozedurrumpf ist die Implementation.
    4. Klassenmodule besitzen wie Standardmodule keine Schnittstelle. Anders als bei Standardmodulen kann man von Klassenmodulen aber zur Laufzeit mehrere Instanzen erstellen.

  6. Ein Klassenmodul enthalte die folgenden Programmzeilen. Welche Aussage ist richtig ?

    Private strName As String
    
    Public Property Get Name() As String
      strName = Name
    End Property

    1. Name ist eine lesegeschützte Eigenschaft.
    2. strName ist eine schreibgeschützte Eigenschaft.
    3. Das Programm erzeugt einen Laufzeitfehler, da die Let-Property fehlt.
    4. Im Rumpf der Property-Prozedur müsste stehen: Name = strName

Vertiefungsfragen

Bevor Sie mit der eigentlichen Aufgabe beginnen, sollten Sie sich nochmals damit vertraut machen, wie Instanzen einer Klasse erstellt und gelöscht werden. Lösen Sie hierfür die Aufgabe Aufgabe Instanzen erstellen und löschen.

Schreiben Sie das Programm Telefonverzeichnis zu einem Programm für die Verwaltung von Geburtstagen um. Die Arbeitsmappe GeburtstageSkelett.xls enthält ein Programmskelett, das aus dem Telefonverzeichnis-Projekt erstellt wurde. Das folgende Bild zeigt die neue Benutzerschnittstelle:

  1. Laden Sie die Arbeitsmappe, und studieren Sie den vorhandenen Programmcode.

  2. Implementieren Sie die Klasse cEintrag. Neu sollen die Namen und Geburtsdaten (statt Telefonnummern) von Freunden und Bekannten gespeichert werden. Das Klassenmodul enthält bereits zwei Variablen dafür. Implementieren Sie die Property-Prozeduren für den Zugriff auf die Eigenschaften.

  3. Wir ändern die Verwaltung des Verzeichnisses. Die Ereignisprozedur suchen_Klick suchte im Telefonverzeichnis sequentiell. Im Programmskelett wurde der Suchalgorithmus in eine Funktion suche() ausgelagert und als binäre Suche neu implementiert.

  4. Die Ereignisprozedur hinzufügen_Klick konnte neue Einträge bisher einfach hinten im Verzeichnis anhängen. Implementieren Sie die Prozedur nun neu so, dass neue Einträge sortiert eingefüllt werden.

  5. Die Ereignisprozedur auflisten_Klick kann einfach alle Elemente des Verzeichnisses der Reihe nach ausgeben, da das Verzeichnis bereits sortiert ist. Implementieren Sie die Prozedur neu.

Lösung LGeburtstage.xls

©abo